/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 package sump;

import java.awt.GraphicsConfiguration;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import javax.imageio.ImageIO;

/**
 *
 * @author Diegolas
 */
public class CargadorImagenes {
    
    private static CargadorImagenes unico = new CargadorImagenes();
    
    public static CargadorImagenes get()
    {
        return unico;
    }
    
    private HashMap sprites = new HashMap();
    
    
    public Image cargar(String nombreImagen)
    {
        //si ya lo tenemos cargado simplemente lo mostramos
        if (sprites.get(nombreImagen)!= null)
        {
            return (Image) sprites.get(nombreImagen);
        }
        
        BufferedImage img = null;
        //verifiquemos que la imagen se encuentra en nuestro store
        try 
        {
            // ClassLoader.getResource() asegura obtener la sprite
            // desde la ruta apropiada

            URL url = this.getClass().getClassLoader().getResource("sprite/"+nombreImagen);
            if (url == null)
            {
                    fail ("No se pudo encontrar la referencia: "+nombreImagen);
            }

            // usamos ImageIO para leer la imagen
            img = ImageIO.read(url);
        } catch (IOException e)
        {
                fail ("Fallo al cargar: "+ nombreImagen);
        }
        //cargamos la imagen con una configuracion adecuada para acelerar el sprite
        GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
        Image imagen = gc.createCompatibleImage(img.getWidth(), img.getHeight(), Transparency.BITMASK);
        imagen.getGraphics().drawImage(img, 0, 0, null);
        
        sprites.put(nombreImagen, imagen);
        
        return imagen;
    }
    
    public void fail(String error)
    {
        System.out.println(error);
        System.exit(0);
    }
    
}
